/*
  method (遍历方式)
  0 文件及目录（包含空目录）（默认）
  1 只含文件（跳过空目录）
  2 只含目录（文件类型将被忽略）
*/
enum FileTraversalMethod {
  all(0),
  filesOnly(1),
  directoriesOnly(2);

  final int rawValue;
  const FileTraversalMethod(this.rawValue);

  String get name {
    switch (this) {
      case FileTraversalMethod.all:
        return "文件及目录（包含空目录）";
      case FileTraversalMethod.filesOnly:
        return "只含文件（跳过空目录）";
      case FileTraversalMethod.directoriesOnly:
        return "只含目录（文件类型将被忽略）";
    }
  }
}

/*
  depth(遍历深度)
  0 表示无限深度（默认）
  1 只遍历当前目录
  2 遍历当前目录及其下一级目录
*/
enum FileTraversalDepth {
  unlimited(0),
  currentDirectory(1),
  oneLevelDown(2);

  final int rawValue;
  const FileTraversalDepth(this.rawValue);

  String get name {
    switch (this) {
      case FileTraversalDepth.unlimited:
        return "无限深度";
      case FileTraversalDepth.currentDirectory:
        return "只遍历当前目录";
      case FileTraversalDepth.oneLevelDown:
        return "遍历当前目录及其下一级目录";
    }
  }
}
